iT邦幫忙

2024 iThome 鐵人賽

DAY 9
1
Software Development

Event driven architecture的奧妙系列 第 9

Day 9 - Asynchronous的機制 (2)

  • 分享至 

  • xImage
  •  

前言

前一篇我們說明什麼是Asynchronous、為什麼需要它以及優點所在。

但這樣就夠了嗎?

顯然是不夠的,因此接下來會進一步用例子探討Asynchronous的特性和它的缺點。

好了~讓我們開始吧!!

Asynchronous探討

還記得在前一篇的時候,我們講了Asynchronous是什麼對吧?

Asynchronous指的是應用程式可以在不等待任務完成的情況下繼續進行,任務完成後會以某種方式通知程式。

是不是覺得抽象,不懂什麼意思,讓我們用例子解釋:

記得前幾天Synchronous舉的銀行開戶的例子,假如你要去銀行開戶,將要辦理的相關文件交給櫃台,從填寫申請表→完成申請開戶,用syn的方式處理,必須等待每一步完成才能進行下一步。

如果你要在銀行同時辦理多件事情,那麼第二件事情得等第一件完成才能處理,一天的時間就這麼浪費掉了。

而Asyn不一樣,讓我們用圖說明:

https://ithelp.ithome.com.tw/upload/images/20240922/20169096GI97KtpTsE.jpg

同樣是去銀行要辦理開戶與提款兩件事情。
同樣辦理開戶要四個步驟,且每一步都要等待,跟syn不同的地方在於:

當你提交申請表 或是 提交相關資料並開始等待時,不用傻傻地站在那等,可以先去提款
提完款 或 櫃台人員通知你檢查/審核完畢的時候再回去進行下一步。

這樣做的好處不會浪費時間在空等,可以處理其餘的事情。

Asynchronous缺點

當然,Asynchronous也有缺點,初步歸納兩點:

  • 複雜性提升: 當開發人員用到asyn的時候,程式會增加像是Promise, async/await...的概念,增加程式的複雜程度
  • 錯誤處理困難: 當開發人員使用Promise, async得時候,需要注意可能潛在的風險以及未考量到的錯誤發生

總結

Asynchronous在現代的應用程式已經是不可貨缺的方法,在微服務的世界也是如此。但需注意不要過度設計造成程式的複雜度太高,後續難以維護與排除。

下一篇會統整Synchronous與Asynchronous之間的區別。
好了~~今天就到這邊!!


上一篇
Day 8 - Asynchronous的機制 (1)
下一篇
Day 10 - Synchronous v.s Asynchronous
系列文
Event driven architecture的奧妙30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言